home *** CD-ROM | disk | FTP | other *** search
File List | 1989-08-15 | 6.5 KB | 181 lines |
- ' *****************************************************************************
- ' * *
- ' * CALLJAMS.BAS: Ein Beispielprogramm, das zeigt, wie man JAMES.ACC *
- ' * von anderen GEM-Programmen her aufrufen kann. *
- ' * *
- ' * * * * SO KANN _IHR_ PROGRAMM AUCH VON DEN MÖGLICHKEITEN VON * * * *
- ' * * * * JAMES, DEM DESKTOP-BUTLER PROFITIEREN ! ! ! * * * *
- ' * *
- ' *****************************************************************************
- '
- Dim Gem$(30)
- '
- ' Initialisierung...
- '
- Deffill 1,2,4
- Pbox -1,-1,640,400 !Bitte das hier nicht nachmachen!!
- Restore Men_zeile
- Cntr%=-1
- Repeat !Menü aufbauen
- Inc Cntr%
- Read Gem$(Cntr%)
- Until Gem$(Cntr%)="****"
- '
- @Appl_find("JAMES ") !Name muß auf 8 zeichen aufgefüllt werden!
- If Rreturn%=-1
- Alert 3,"JAMES.ACC nicht gefunden:|Entweder wurde das ACC um-|benannt oder ist nicht im|System.",1,"Abbruch",Wert%
- End
- Else
- James_id%=Rreturn%
- Alert 1,"AP_ID von James: "+Str$(James_id%),1," OK ",Wert%
- Endif
- '
- Menu Gem$()
- On Menu Gosub Verzweige !Normale Menüleistenverwaltung
- On Menu Message Gosub James_antwortet !`EVNT_MESSAGE`
- '
- My_ap_id%=0 !Die AP_ID des GFABASIC: Sollte eigentlich mit APPL_INIT
- ' !richtig bestimmt werden.
- '
- Do !Die EVNT_MULTI-Schleife
- On Menu
- Loop
- '
- Procedure Verzweige !Reaktion auf Menüleiste
- Local Wert%
- '
- Qq%=Menu(0)
- If Qq%=1
- @Info
- Endif
- On Qq%-10 Gosub Pling,D,Ende,D,D,Call_m1,Cm2,Cm2,Cm3,Cm3,Cm4,D,Cm0
- Menu Off
- Return
- '
- Procedure Info !Menüpkt. info
- Local Wert%
- Alert 1,"Beispielprogramm zum |Aufruf von 'JAMES'.| |(PRG by Pascal Fellerich)",1," OK ",Wert%
- Return
- '
- Procedure Pling !WITZIG!!!
- Print "◆";
- Return
- '
- Procedure Call_m1 !Main Menu aufrufen
- @James(1)
- Return
- '
- Procedure Cm2 !PRN_AUX-Menu aufrufen
- @James(2)
- Return
- '
- Procedure Cm3 !DISK-Menü aufrufen
- @James(3)
- Return
- '
- Procedure Cm4 !SETUP-MENU aufrufen
- @James(4)
- Return
- '
- Procedure Cm0 !James nach seiner Versionsnummer fragen
- @James(0)
- Return
- '
- Procedure Ende
- Alert 2,"Wie denn? War das |etwa schon alles??",2," NEIN |JA",Wert%
- If Wert%=2
- Menu Kill
- End
- Endif
- Return
- '
- Procedure D !Dummyfunktion
- Print Qq%
- Return
- '
- ' **********************************************************************
- ' * *
- ' * SO SCHICKT MAN JAMES EINE NACHRICHT: *
- ' * Eine Message besteht aus 16 Bytes (8 Words). Dabei sind: *
- ' * Word 0: OpCode (für James) *
- ' * Word 1: AP_ID des Aufrufenden Programmes *
- ' * Word 2: 0 (immer!, wird von J. nicht beachtet) *
- ' * Word 3 bis 7: 0, werden nicht beachtet *
- ' * *
- ' * Dabei ist OpCode: $100 -> Versionsnummer fragen (siehe auch *
- ' * Procedure James_antwortet) *
- ' * $101 -> Call Main Menu *
- ' * $102 -> Call PRN-AUX-Menu *
- ' * $103 -> Call Disk-Menu *
- ' * Wenn eine Dialogbox von James so aufgerufen wird, dann sperrt *
- ' * James vorsichtshalber das AES mit dem Aufruf 'WIND_UPDATE(2)' *
- ' * [begin Mcontrol]. *
- ' * *
- ' **********************************************************************
- Procedure James(N%) !Mit Hilfe von APPL_WRITE bekommt James eine
- If N%<0 Or N%>4 !Message geschickt.
- Goto Xx
- Endif
- N%=N%+&H100
- A$=String$(20,0)
- Dpoke Varptr(A$),N%
- Dpoke Varptr(A$)+2,My_ap_id% !Aufrufer apid
- @In(2,1,1,0)
- Dpoke Gintin,James_id%
- Dpoke Gintin+2,16
- Lpoke Addrin,Varptr(A$)
- Gemsys 12
- Xx:
- Return
- '
- Procedure Appl_find(A$)
- A$=A$+Chr$(0)
- @In(0,1,1,0)
- Lpoke Addrin,Varptr(A$)
- Gemsys 13
- Rreturn%=Dpeek(Gintout)
- If Rreturn%>&H7FFF !in Assembler: ext.l INTOUT
- Rreturn%=Rreturn% Or &HFFFF0000
- Endif
- Return
- '
- Deffn Rreturn=Dpeek(Gintout)
- Procedure In(G2%,G4%,G6%,G8%)
- Dpoke Gcontrl+2,G2%
- Dpoke Gcontrl+4,G4%
- Dpoke Gcontrl+6,G6%
- Dpoke Gcontrl+8,G8%
- Return
- '
- ' **********************************************************************
- ' * *
- ' * SO ANTWORTET JAMES auf die Versions-Frage (OPCODE $100) *
- ' * *
- ' * Im Message Buffer der aufrufenden Applikation findet sich *
- ' * folgendes: Word 0: $100 *
- ' * Word 1: AP_ID von James *
- ' * Word 2: 0 *
- ' * Word 3: Haupt-Revision von James *
- ' * Word 4: Unter-Revision von James *
- ' * Word 5: TOS Version. ($104 für TOS 1.4) *
- ' * Word 6 & 7: ???? *
- ' * *
- ' **********************************************************************
- Procedure James_antwortet
- If Menu(2)=James_id%
- J_hiversion%=Menu(4)
- J_loversion%=Menu(5)
- Tos_version%=Menu(6)
- Jversion$=Str$(J_hiversion%)+"."+Str$(J_loversion%)
- Alert 3,"James meldet zurück:|>JAMES V "+Jversion$+"<|>TOS-Version "+Hex$(Tos_version%)+"<",1," OK ",Wert%
- Endif
- Return
- '
- Men_zeile:
- Data Desk , Info ,--------------------,-1,-2,-3,-4,-5,-6,
- Data File , Pling! ,---------------, Ende ,
- Data Butler , Hauptmenü , RS-232 Params, Printer Config, Schreibschutz
- Data Antivirus..., Setup...,------------------, James Version...,,,
- Data ****
- End
-